package com.dc.refactoring._3_重新组织数据._1_SelfEncapsulateField.newObject;

/**
 * Description: 自封装字段_整数范围
 * @author: gdc
 * @date: 2020/11/16
 * @version 1.0
 */
public class IntRange {
    private int low;
    private int high;

    public IntRange(int low, int high) {
        initialize(low, high);
    }

    // 使用本项重构时，必须小心对待“在构造函数中使用设值函数”的情况
    // 一般来说，设值函数被认为应该在对象创建后才使用，所以初始化过程中的行为有可能与设置函数的行为不同。
    // 这种情况下，可在构造函数中直接访问字段，或者就是单独另建一个初始化函数。
    public void initialize(int low, int high) {
        this.low = low;
        this.high = high;
    }

    public boolean includes(int arg) {
        // 当前通过取值函数操作
        return arg >= getLow() && arg <= getHigh();
    }

    public void grow(int factor) {
        setHigh(getHigh() * factor);
    }



    public int getLow() {
        return low;
    }

    public void setLow(int low) {
        this.low = low;
    }

    public int getHigh() {
        return high;
    }

    public void setHigh(int high) {
        this.high = high;
    }
}
